#include <QDebug>
#include "capaasincrona.h"

CapaAsincrona::CapaAsincrona() : Capa()
{

}

CapaAsincrona::~CapaAsincrona()
{

}

void CapaAsincrona::pedirImagen(QRectF encuadreReal, int anchoPixeles, int altoPixeles)
{   
    Peticion peticion(encuadreReal, anchoPixeles, altoPixeles);
    
    if (peticionActual.esValida()) {
        peticionPendiente = peticion;
    } else {
        peticionActual = peticion;
        realizarPeticion(peticion);
    }
}

 void CapaAsincrona::limpiar()
 {
    imagen = QImage();
 }

//bool CapaAsincrona::hayPeticionPendiente()
//{
//    return peticionActual.esValida() || peticionPendiente.esValida();
//}

void CapaAsincrona::peticionRecibida(QImage imagen)
{
    Peticion peticionRecibida = peticionActual;
    peticionActual = Peticion();

    if (!peticionRecibida.esValida()) {
        return;
    }

    this->imagen = imagen;
    this->encuadreReal = peticionRecibida.encuadreReal;

    emit capaRecibida(this);

    comprobarPeticionPendiente();
}

void CapaAsincrona::peticionFallida(QString mensaje)
{
    emit errorRecibido(mensaje);
    comprobarPeticionPendiente();
}
    
void CapaAsincrona::comprobarPeticionPendiente()
{
    if (peticionPendiente.esValida()) {
        peticionActual = peticionPendiente;
        peticionPendiente = Peticion();
        realizarPeticion(peticionActual);
    } else {
        peticionActual = Peticion();
    }
}